/*
 * Copyright (C) 2023 Kyle Reed
 *
 * This file is part of PortaPack.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street,
 * Boston, MA 02110-1301, USA.
 */

#include "ui_font_fixed_5x8.hpp"

#include <cstdint>

namespace ui {
namespace font {

namespace {

const uint8_t fixed_5x8_glyph_data[] = {

    // Index: 0 (0x00)  Char: 0x0020 (' ')
    0x00,
    0x00,
    0x00,
    0x00,
    0x00,
    // Index: 1 (0x01)  Char: 0x0021 ('!')
    0x80,
    0x10,
    0x42,
    0x00,
    0x01,

    // Index: 2 (0x02)  Char: 0x0022 ('"')
    0x40,
    0x29,
    0x00,
    0x00,
    0x00,

    // Index: 3 (0x03)  Char: 0x0023 ('#')
    0x00,
    0xA8,
    0xA7,
    0x9E,
    0x02,

    // Index: 4 (0x04)  Char: 0x0024 ('$')
    0x80,
    0x38,
    0x83,
    0x1C,
    0x01,

    // Index: 5 (0x05)  Char: 0x0025 ('%')
    0x00,
    0x80,
    0x44,
    0x44,
    0x02,

    // Index: 6 (0x06)  Char: 0x0026 ('&')
    0x40,
    0x94,
    0xA1,
    0xCA,
    0x02,

    // Index: 7 (0x07)  Char: 0x0027 (''')
    0x80,
    0x10,
    0x00,
    0x00,
    0x00,

    // Index: 8 (0x08)  Char: 0x0028 ('(')
    0x80,
    0x08,
    0x21,
    0x04,
    0x01,

    // Index: 9 (0x09)  Char: 0x0029 (')')
    0x40,
    0x10,
    0x42,
    0x88,
    0x00,

    // Index: 10 (0x0A)  Char: 0x002A ('*')
    0x00,
    0x28,
    0xE2,
    0x88,
    0x02,

    // Index: 11 (0x0B)  Char: 0x002B ('+')
    0x00,
    0x00,
    0xE2,
    0x08,
    0x00,

    // Index: 12 (0x0C)  Char: 0x002C (',')
    0x00,
    0x00,
    0x00,
    0x88,
    0x00,

    // Index: 13 (0x0D)  Char: 0x002D ('-')
    0x00,
    0x00,
    0xE0,
    0x00,
    0x00,

    // Index: 14 (0x0E)  Char: 0x002E ('.')
    0x00,
    0x00,
    0x00,
    0x80,
    0x00,

    // Index: 15 (0x0F)  Char: 0x002F ('/')
    0x00,
    0x21,
    0x42,
    0x84,
    0x00,

    // Index: 16 (0x10)  Char: 0x0030 ('0')
    0xC0,
    0xA4,
    0xB6,
    0x92,
    0x01,

    // Index: 17 (0x11)  Char: 0x0031 ('1')
    0x80,
    0x18,
    0x42,
    0x88,
    0x03,

    // Index: 18 (0x12)  Char: 0x0032 ('2')
    0xC0,
    0x24,
    0x64,
    0xC2,
    0x03,

    // Index: 19 (0x13)  Char: 0x0033 ('3')
    0xC0,
    0x24,
    0x82,
    0x92,
    0x01,

    // Index: 20 (0x14)  Char: 0x0034 ('4')
    0x00,
    0x31,
    0x95,
    0x1E,
    0x02,

    // Index: 21 (0x15)  Char: 0x0035 ('5')
    0xE0,
    0x85,
    0x83,
    0x92,
    0x01,

    // Index: 22 (0x16)  Char: 0x0036 ('6')
    0xC0,
    0x84,
    0x93,
    0x92,
    0x01,

    // Index: 23 (0x17)  Char: 0x0037 ('7')
    0xE0,
    0x21,
    0x44,
    0x84,
    0x00,

    // Index: 24 (0x18)  Char: 0x0038 ('8')
    0xC0,
    0x24,
    0x93,
    0x92,
    0x01,

    // Index: 25 (0x19)  Char: 0x0039 ('9')
    0xC0,
    0xA4,
    0xE4,
    0x90,
    0x01,

    // Index: 26 (0x1A)  Char: 0x003A (':')
    0x00,
    0x00,
    0x01,
    0x04,
    0x00,

    // Index: 27 (0x1B)  Char: 0x003B (';')
    0x00,
    0x00,
    0x02,
    0x88,
    0x00,

    // Index: 28 (0x1C)  Char: 0x003C ('<')
    0x00,
    0x10,
    0x11,
    0x04,
    0x01,

    // Index: 29 (0x1D)  Char: 0x003D ('=')
    0x00,
    0x00,
    0x07,
    0x1C,
    0x00,

    // Index: 30 (0x1E)  Char: 0x003E ('>')
    0x00,
    0x08,
    0x82,
    0x88,
    0x00,

    // Index: 31 (0x1F)  Char: 0x003F ('?')
    0x80,
    0x28,
    0x44,
    0x00,
    0x01,

    // Index: 32 (0x20)  Char: 0x0040 ('@')
    0xC0,
    0xA4,
    0xD6,
    0x82,
    0x01,

    // Index: 33 (0x21)  Char: 0x0041 ('A')
    0xC0,
    0xA4,
    0xF4,
    0x52,
    0x02,

    // Index: 34 (0x22)  Char: 0x0042 ('B')
    0xE0,
    0xA4,
    0x93,
    0xD2,
    0x01,

    // Index: 35 (0x23)  Char: 0x0043 ('C')
    0xC0,
    0xA4,
    0x10,
    0x92,
    0x01,

    // Index: 36 (0x24)  Char: 0x0044 ('D')
    0xE0,
    0xA4,
    0x94,
    0xD2,
    0x01,

    // Index: 37 (0x25)  Char: 0x0045 ('E')
    0xE0,
    0x85,
    0x13,
    0xC2,
    0x03,

    // Index: 38 (0x26)  Char: 0x0046 ('F')
    0xE0,
    0x85,
    0x13,
    0x42,
    0x00,

    // Index: 39 (0x27)  Char: 0x0047 ('G')
    0xC0,
    0xA4,
    0xD0,
    0x92,
    0x01,

    // Index: 40 (0x28)  Char: 0x0048 ('H')
    0x20,
    0xA5,
    0x97,
    0x52,
    0x02,

    // Index: 41 (0x29)  Char: 0x0049 ('I')
    0xC0,
    0x11,
    0x42,
    0x88,
    0x03,

    // Index: 42 (0x2A)  Char: 0x004A ('J')
    0xC0,
    0x21,
    0x84,
    0x92,
    0x01,

    // Index: 43 (0x2B)  Char: 0x004B ('K')
    0x20,
    0x95,
    0x51,
    0x52,
    0x02,

    // Index: 44 (0x2C)  Char: 0x004C ('L')
    0x40,
    0x08,
    0x21,
    0x84,
    0x03,

    // Index: 45 (0x2D)  Char: 0x004D ('M')
    0xA0,
    0xBD,
    0x95,
    0x52,
    0x02,

    // Index: 46 (0x2E)  Char: 0x004E ('N')
    0x20,
    0xA5,
    0xD5,
    0x52,
    0x02,

    // Index: 47 (0x2F)  Char: 0x004F ('O')
    0xC0,
    0xA4,
    0x94,
    0x92,
    0x01,

    // Index: 48 (0x30)  Char: 0x0050 ('P')
    0xE0,
    0xA4,
    0x74,
    0x42,
    0x00,

    // Index: 49 (0x31)  Char: 0x0051 ('Q')
    0xC0,
    0xA4,
    0x94,
    0x8A,
    0x02,

    // Index: 50 (0x32)  Char: 0x0052 ('R')
    0xE0,
    0xA4,
    0x74,
    0x52,
    0x02,

    // Index: 51 (0x33)  Char: 0x0053 ('S')
    0xC0,
    0x24,
    0x41,
    0x92,
    0x01,

    // Index: 52 (0x34)  Char: 0x0054 ('T')
    0xC0,
    0x11,
    0x42,
    0x08,
    0x01,

    // Index: 53 (0x35)  Char: 0x0055 ('U')
    0x20,
    0xA5,
    0x94,
    0x92,
    0x03,

    // Index: 54 (0x36)  Char: 0x0056 ('V')
    0x20,
    0xA5,
    0x94,
    0x8A,
    0x00,

    // Index: 55 (0x37)  Char: 0x0057 ('W')
    0x20,
    0xA5,
    0xB4,
    0x5E,
    0x01,

    // Index: 56 (0x38)  Char: 0x0058 ('X')
    0x20,
    0x25,
    0x63,
    0x52,
    0x02,

    // Index: 57 (0x39)  Char: 0x0059 ('Y')
    0x20,
    0xA5,
    0x64,
    0x08,
    0x01,

    // Index: 58 (0x3A)  Char: 0x005A ('Z')
    0xE0,
    0x21,
    0x22,
    0xC2,
    0x03,

    // Index: 59 (0x3B)  Char: 0x005B ('[')
    0xC0,
    0x08,
    0x21,
    0x84,
    0x01,

    // Index: 60 (0x3C)  Char: 0x005C ('\')
    0x40,
    0x08,
    0x42,
    0x10,
    0x02,

    // Index: 61 (0x3D)  Char: 0x005D (']')
    0xC0,
    0x10,
    0x42,
    0x88,
    0x01,

    // Index: 62 (0x3E)  Char: 0x005E ('^')
    0x00,
    0x10,
    0x05,
    0x00,
    0x00,

    // Index: 63 (0x3F)  Char: 0x005F ('_')
    0x00,
    0x00,
    0x00,
    0xC0,
    0x03,

    // Index: 64 (0x40)  Char: 0x0060 ('`')
    0x40,
    0x10,
    0x00,
    0x00,
    0x00,

    // Index: 65 (0x41)  Char: 0x0061 ('a')
    0x00,
    0x00,
    0x83,
    0x9E,
    0x03,

    // Index: 66 (0x42)  Char: 0x0062 ('b')
    0x20,
    0x84,
    0x93,
    0x92,
    0x01,

    // Index: 67 (0x43)  Char: 0x0063 ('c')
    0x00,
    0x00,
    0x17,
    0x82,
    0x03,

    // Index: 68 (0x44)  Char: 0x0064 ('d')
    0x00,
    0x21,
    0x97,
    0x92,
    0x01,

    // Index: 69 (0x45)  Char: 0x0065 ('e')
    0x00,
    0x00,
    0xF3,
    0x82,
    0x01,

    // Index: 70 (0x46)  Char: 0x0066 ('f')
    0x80,
    0x89,
    0x23,
    0x84,
    0x00,

    // Index: 71 (0x47)  Char: 0x0067 ('g')
    0x00,
    0x98,
    0xE4,
    0x90,
    0x01,

    // Index: 72 (0x48)  Char: 0x0068 ('h')
    0x20,
    0x84,
    0x93,
    0x52,
    0x02,

    // Index: 73 (0x49)  Char: 0x0069 ('i')
    0x80,
    0x00,
    0x43,
    0x08,
    0x02,

    // Index: 74 (0x4A)  Char: 0x006A ('j')
    0x00,
    0x01,
    0x86,
    0x90,
    0x01,

    // Index: 75 (0x4B)  Char: 0x006B ('k')
    0x40,
    0x08,
    0x65,
    0x94,
    0x02,

    // Index: 76 (0x4C)  Char: 0x006C ('l')
    0xC0,
    0x10,
    0x42,
    0x08,
    0x02,

    // Index: 77 (0x4D)  Char: 0x006D ('m')
    0x00,
    0x80,
    0xF6,
    0x56,
    0x02,

    // Index: 78 (0x4E)  Char: 0x006E ('n')
    0x00,
    0x80,
    0x93,
    0x52,
    0x02,

    // Index: 79 (0x4F)  Char: 0x006F ('o')
    0x00,
    0x00,
    0x93,
    0x92,
    0x01,

    // Index: 80 (0x50)  Char: 0x0070 ('p')
    0x00,
    0x98,
    0x74,
    0x42,
    0x00,

    // Index: 81 (0x51)  Char: 0x0071 ('q')
    0x00,
    0x98,
    0xE4,
    0x10,
    0x02,

    // Index: 82 (0x52)  Char: 0x0072 ('r')
    0x00,
    0x00,
    0x65,
    0x84,
    0x00,

    // Index: 83 (0x53)  Char: 0x0073 ('s')
    0x00,
    0x00,
    0x66,
    0x90,
    0x03,

    // Index: 84 (0x54)  Char: 0x0074 ('t')
    0x80,
    0x10,
    0x47,
    0x08,
    0x02,

    // Index: 85 (0x55)  Char: 0x0075 ('u')
    0x00,
    0x80,
    0x94,
    0x92,
    0x03,

    // Index: 86 (0x56)  Char: 0x0076 ('v')
    0x00,
    0x80,
    0x94,
    0x8A,
    0x00,

    // Index: 87 (0x57)  Char: 0x0077 ('w')
    0x00,
    0x80,
    0xB4,
    0x5E,
    0x01,

    // Index: 88 (0x58)  Char: 0x0078 ('x')
    0x00,
    0x00,
    0x45,
    0x88,
    0x02,

    // Index: 89 (0x59)  Char: 0x0079 ('y')
    0x00,
    0x80,
    0xE4,
    0x90,
    0x01,

    // Index: 90 (0x5A)  Char: 0x007A ('z')
    0x00,
    0x00,
    0xC7,
    0x84,
    0x03,

    // Index: 91 (0x5B)  Char: 0x007B ('{')
    0x80,
    0x11,
    0x41,
    0x08,
    0x03,

    // Index: 92 (0x5C)  Char: 0x007C ('|')
    0x80,
    0x10,
    0x42,
    0x08,
    0x01,

    // Index: 93 (0x5D)  Char: 0x007D ('}')
    0xC0,
    0x10,
    0x44,
    0x88,
    0x01,

    // Index: 94 (0x5E)  Char: 0x007E ('~')
    0x00,
    0x00,
    0x55,
    0x00,
    0x00,

};

}

const ui::Font fixed_5x8{
    5,
    8,
    fixed_5x8_glyph_data,
    0x20,
    95,
};

} /* namespace font */
} /* namespace ui */
